package com.itheima.controller;

import com.github.pagehelper.PageInfo;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 员工管理Controller
 */
@Slf4j

@RequestMapping("/emps") //公共请求路径,一个完整的请求路径，应该是类上的 @RequestMapping 的value属性 + 方法上的 @XXXMapping的value属性。

public class EmpController {

    @Autowired
    private EmpService empService;

    @RequestMapping("/testEmp")
    public Result testEmp() {
        System.out.println("测试成功");
        List<Dept> list = new ArrayList<>();
        Dept dept = new Dept();
        dept.setId(1);
        dept.setName("aaa");

        Dept dept2 = new Dept();
        dept2.setId(12);
        dept2.setName("aaa2");

        list.add(dept);
        list.add(dept2);

        return Result.success(list);
    }


    @GetMapping
    public Result list1(@RequestParam(defaultValue = "2") Integer page, @RequestParam(defaultValue = "3") Integer pageSize) {/*@RequestParam(defaultValue = "1")  注解@RequestParam的属性defaultValue用于在没有传请求参数(或者为null)时,为参数指定默认值*/

        log.info("接收到的当前第几页：{}", page);
        log.info("接收到的每页多少条：{}", pageSize);

        //调用service获取当前页数据
//        PageBean<Emp> pageBean = empService.page(page, pageSize);//手写实现分页
//        PageBean<Emp> pageBean = empService.page2(page, pageSize);//使用pagehelper插件实现分页
        PageInfo<Emp> pageBean = empService.page3(page, pageSize);//使用pagehelper插件实现分页,但是不返回自定义的PageBean类型,而是返回pagehelper中提供的PageInfo类对象,当中有分页相关的所有信息,返回给前端,前端便可以获得分页相关的所有信息

        //返回数据
        return Result.success(pageBean);
    }


    /*POSTMAN发起GET请求
    url:
    http://localhost:8080/emps/1/5?begin=2000/02/02&end=2012/02/02
    或
    http://localhost:8080/emps?begin=2000/02/02&end=2012/02/02

    额外还要请求体中写JSON
    {
    "name":"张",
    "gender":1
    }
    */
    @GetMapping(value = {"list2/{page}/{pageSize}", "list2"})
    public Result list2(@PathVariable(value = "page", required = false) Integer page, @PathVariable(value = "pageSize", required = false) Integer pageSize, @RequestBody Emp conditionEmp, @RequestParam /*@DateTimeFormat(pattern = "yyyy-MM-dd")*/ Date begin, @RequestParam /*@DateTimeFormat(pattern = "yyyy-MM-dd")*/ Date end) {
        if (page == null) {
            page = 1;
        }
        if (pageSize == null) {
            pageSize = 3;
        }
        System.err.println("page=" + page);
        System.err.println("pageSize=" + pageSize);

        log.info("接收到的当前第几页：{}", page);
        log.info("接收到的每页多少条：{}", pageSize);
        log.info("接收到的起始时间：{}", begin);
        log.info("接收到的截至时间：{}", end);
        log.info("接收到的条件对象：{}", conditionEmp);


        PageInfo<Emp> pageInfo = empService.page4(page, pageSize, conditionEmp, begin, end);
        return Result.success(pageInfo);
    }


    /*POSTMAN发起DELETE请求
    url: http://localhost:8080/emps/18,19,20*/
    //批量删除员工
    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable List<Integer> ids) {//接收路径参数id数组
        empService.delete(ids);
        return Result.success();
    }

}
